package pe.gob.onpe.ejb;

import java.util.HashSet;
import java.util.Set;
import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import pe.gob.onpe.ejb.id.ListaCandidatosPostulanteId;


/**
 * ListaCandidatosPostulante entity.
 * 
 * @author MyEclipse Persistence Tools
 */
@Entity
@Table(name = "LISTA_CANDIDATOS_POSTULANTE", schema = "SVENP", uniqueConstraints = {})
public class ListaCandidatosPostulante implements java.io.Serializable {
	
	private static final long serialVersionUID = 1842915366083849381L;
	private ListaCandidatosPostulanteId	id;
	private ProcesoElectoral			procesoElectoral;
	private String						nombre;
	private String						rutasimboloasociado;
	private Long						numerolistacandidato;
	private Long						numeroordenlistacandidato;
	private Set<ParticipacionListaCandidatos> participacionListaCandidatoses = new HashSet<ParticipacionListaCandidatos>(0);
	private Set<Candidato> candidatos = new HashSet<Candidato>(0);

	// Constructors

	/** default constructor */
	public ListaCandidatosPostulante() {
	}

	/** minimal constructor */
	public ListaCandidatosPostulante(ListaCandidatosPostulanteId id,
			ProcesoElectoral procesoElectoral, String nombre) {
		this.id = id;
		this.procesoElectoral = procesoElectoral;
		this.nombre = nombre;
	}

	/** full constructor */
	public ListaCandidatosPostulante(ListaCandidatosPostulanteId id,
			ProcesoElectoral procesoElectoral, String nombre,
			String rutasimboloasociado, Long numerolistacandidato,
			Long numeroordenlistacandidato,
			Set<ParticipacionListaCandidatos> participacionListaCandidatoses,
			Set<Candidato> candidatos) {
		this.id = id;
		this.procesoElectoral = procesoElectoral;
		this.nombre = nombre;
		this.rutasimboloasociado = rutasimboloasociado;
		this.numerolistacandidato = numerolistacandidato;
		this.numeroordenlistacandidato = numeroordenlistacandidato;
		this.participacionListaCandidatoses = participacionListaCandidatoses;
		this.candidatos = candidatos;
	}

	// Property accessors
	@EmbeddedId
	@AttributeOverrides( {
			@AttributeOverride(name = "procesoElectoralId", column = @Column(name = "PROCESO_ELECTORAL_ID", unique = false, nullable = false, insertable = true, updatable = true, precision = 10, scale = 0)),
			@AttributeOverride(name = "listacandidatospostulanteId", column = @Column(name = "LISTACANDIDATOSPOSTULANTE_ID", unique = false, nullable = false, insertable = true, updatable = true, precision = 10, scale = 0)) })
	public ListaCandidatosPostulanteId getId() {
		return this.id;
	}

	public void setId(ListaCandidatosPostulanteId id) {
		this.id = id;
	}

	@ManyToOne(cascade = {}, fetch = FetchType.LAZY)
	@JoinColumn(name = "PROCESO_ELECTORAL_ID", unique = false, nullable = false, insertable = false, updatable = false)
	public ProcesoElectoral getProcesoElectoral() {
		return this.procesoElectoral;
	}

	public void setProcesoElectoral(ProcesoElectoral procesoElectoral) {
		this.procesoElectoral = procesoElectoral;
	}

	@Column(name = "NOMBRE", unique = false, nullable = false, insertable = true, updatable = true)
	public String getNombre() {
		return this.nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	@Column(name = "RUTASIMBOLOASOCIADO", unique = false, nullable = true, insertable = true, updatable = true)
	public String getRutasimboloasociado() {
		return this.rutasimboloasociado;
	}

	public void setRutasimboloasociado(String rutasimboloasociado) {
		this.rutasimboloasociado = rutasimboloasociado;
	}

	@Column(name = "NUMEROLISTACANDIDATO", unique = false, nullable = true, insertable = true, updatable = true, precision = 10, scale = 0)
	public Long getNumerolistacandidato() {
		return this.numerolistacandidato;
	}

	public void setNumerolistacandidato(Long numerolistacandidato) {
		this.numerolistacandidato = numerolistacandidato;
	}

	@Column(name = "NUMEROORDENLISTACANDIDATO", unique = false, nullable = true, insertable = true, updatable = true, precision = 10, scale = 0)
	public Long getNumeroordenlistacandidato() {
		return this.numeroordenlistacandidato;
	}

	public void setNumeroordenlistacandidato(Long numeroordenlistacandidato) {
		this.numeroordenlistacandidato = numeroordenlistacandidato;
	}

	@OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY, mappedBy = "listaCandidatosPostulante")
	public Set<ParticipacionListaCandidatos> getParticipacionListaCandidatoses() {
		return this.participacionListaCandidatoses;
	}

	public void setParticipacionListaCandidatoses(
			Set<ParticipacionListaCandidatos> participacionListaCandidatoses) {
		this.participacionListaCandidatoses = participacionListaCandidatoses;
	}

	@OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY, mappedBy = "listaCandidatosPostulante")
	public Set<Candidato> getCandidatos() {
		return this.candidatos;
	}

	public void setCandidatos(Set<Candidato> candidatos) {
		this.candidatos = candidatos;
	}

}